var config = require('../utils/config.js')
/**
 *
 * @param {*} url 请求路径
 * @param {*} params 请求参数
 * @param {*} method 请求方式。默认 POST
 * @returns
 */

const request = ({url, params, method = "POST"}) =>{
  return new Promise(function(resolve, reject) {
    // 获取当前设备网络类型
    wx.getNetworkType({
      success (res) {
        wx.setStorageSync('networkType', res.networkType)
      }
    })
    // 提取请求头参数
    const header = {
      'Content-Type': 'application/json',
      'token': wx.getStorageSync('token'),
      'utype':'referral',
      'ctype':'wxapp',
      'version': config.version, // 当前小程序版本号
      'dtype': config.deviceInfo.model +','+ config.deviceInfo.system +','+ config.deviceInfo.version +','+ wx.getStorageSync('networkType'), // 当前用户的设备
      'Timestamp': Math.floor(Date.now() / 1000), // 时间戳
    }
    wx.request({
      url: config.domain + url,
      data: params,
      method: method,
      header,
      success: (res) => {
        if (res.statusCode === 500 || res.statusCode === 405){
          wx.showToast({
            title: '网络异常',
            icon: 'loading',
            duration: 2000
          })
          reject('网络错误');
        }
        if (res.statusCode === 404){
          wx.showToast({
            title: '接口不存在',
            icon: 'loading',
            duration: 2000
          })
          reject('接口不存在')
        }
        if (res.statusCode === 200) {
          // 这里由于接口结构字段变化需要做一个判断
          if (res.data.code) {
            res.data.status = res.data.code
            res.data.msg = res.data.message
          }
          const response = res.data
          if (response.status == 1005) {
            console.log('Token已过期')
            // 清除登录相关内容
            try {
              const app = getApp()
              app && app.clearAllStorageAndLogin();
              wx.hideLoading()
              wx.showToast({
                title: '登录失效，请重新登录',
                icon: 'none',
                mask: true,
                duration: 2500
              })
              setTimeout(() => {
                // 直接跳转到登录页面
                wx.reLaunch({
                  url: '/pages/login/login'
                })
              }, 2000)
            } catch (e) {
              // Error
              wx.reLaunch({
                url: '/pages/login/login'
              })
            }
          } else {
            resolve(response);
          }
        } else {
          wx.showToast({
            title: res.errMsg || '请求失败',
            icon: 'loading',
            duration: 2000
          })
          reject(res.errMsg);
        }
      },
      fail: (err) => {
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'loading',
          duration: 0
        })
        reject(err)
      }
    })
  })
}

module.exports = {
  request
}

